import config from '@/config/index'
import RequestHttp from './index'
import { msg } from '@/utils/feedback'

let requestObj = new RequestHttp()

// 设置请求拦截
requestObj.interceptors.request((config) => {
    let { url, header } = config

    config.header = {
        ...header,
        'X-Auth-Token': ''
    }
    config.url = config.host + url

    console.log('configconfigconfig', config)
    return config
})
// 设置响应拦截
requestObj.interceptors.response((response) => {
    let { data } = response
    console.log('responseresponseresponse',response)
    // 根据不同状态码 进行 处理
    return statusCode[data.status](data)
})


/**
 * 根据不同状态码 进行 处理
 * @type {{"200"(*): *, "401"(*): void, "403"(*), "408"(*)}}
 */
let statusCode = {
    '200' (data) {
        return data
    },
    '401' (data) { // 未登录
        msg(data.message)
        return data
    },
    '408' (data) { // 请求超时
        msg(data.message)
        return data
    },
    '403' (data) { // 权限代码
        msg(data.message)
        return data
    }
}

/**
 * 参数说明
 * @param {Object} options 请参考uni 的请求配置
 * @param {String} options.url 请求地址
 * @param {String} options.method 请求类型
 * @param {Object} options.data 请求参数
 * @param {Object} Object ext 附加参数
 * @param {Object} ext.formData 是否是表单提交 (默认否)
 * @param {Boolean} ext.showLogin 是否显示加载（login）状态
 * @param {Boolean} ext.hiddenLogin 是否关闭加载（login）状态
 * @return {Object} 返回 promise 数据
 */
function request(options, ext) {
        // 配置参数
        requestObj.setConfig(options, ext)
        // 请求
        return requestObj.request()
}

export { request }
